this
this是js的一个关键字,只能在函数内部使用,在函数运行时候自动生成的内部对象,代表函数运行时候的作用域指向,使用频率极高!
常用的用法与作用域指向
-
函数调用:js里面规定当一个函数并非某一个对象,直接调用的时候,称之为函数调用,此时this指向全局对象Global。
var t = 1; function test(){ console.log(this.t) } test() //1
-
方法调用:当一个函数作为一个对象的属性调用时候(
[fn]下标表达式或者.fn点表达式
)称之为方法调用,此时this指向这个对象。var t =1; var obj= { t:2, test :function(){ console.log(this.t) } } obj.test() // 2
-
作为构造函数调用:
var test = new fn()
的方式 称fn为test的构造函数,new的过程中构造函数的this对象的属性和方法将被加到新对象的属性上
。function fn(){ this.t = 1 } var test = new fn(); test.t // 1 //fn的this对象会被加到新生成的test对象上
4:apply,call,bind方式调用:apply,call,bind都可以改变一个函数运行时候的this指向。
var t = 1
var test = function(){
console.log(this.t)
}
test() //1
test.call({t:2}) //2
test.apply({t:3})//3
test.bind({t:4})()//4
关于bind的分析,可以看另一篇文章:bind方法分析与实现
看完了上面4种调用方式可以得出一个结论
:this指向的作用域永远是函数运行时候决定的
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。